package com.itshidu.jiaowu;

import java.sql.Driver;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class Generator {
	public static void main(String[] args) {
		   AutoGenerator mpg = new AutoGenerator();

	        // 全局配置
	        GlobalConfig gc = new GlobalConfig();
	        //输出目录随便写，最终会在这里生成代码(输出到本地的目录)
	        gc.setOutputDir("D:/java/MybatisPlusOut/jiaowu");
	        gc.setFileOverride(true); //是否覆盖
	        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
	        gc.setEnableCache(false);// XML 二级缓存
	        gc.setBaseResultMap(true);// XML ResultMap
	        gc.setBaseColumnList(false);// XML columList
	        gc.setAuthor("XiaZengming");// 作者

	        // 自定义文件命名，注意 %s 会自动填充表实体属性！
	        gc.setControllerName("%sAction");
	        gc.setServiceName("%sService");
	        gc.setServiceImplName("%sServiceImpl");
	        gc.setMapperName("%sMapper");
	        gc.setXmlName("%sMapper");
	        mpg.setGlobalConfig(gc);

	        // 数据源配置
	        DataSourceConfig dsc = new DataSourceConfig();
	        dsc.setDbType(DbType.MYSQL);

	        dsc.setTypeConvert(new MySqlTypeConvert() {
	            // 自定义数据库表字段类型转换【可选】
	            @Override
	            public DbColumnType processTypeConvert(String fieldType) {
	                System.out.println("转换类型：" + fieldType);
	                // 注意！！processTypeConvert 存在默认类型转换，如果不是你要的效果请自定义返回、非如下直接返回。
	                return super.processTypeConvert(fieldType);
	            }
	        });

	        dsc.setDriverName("com.mysql.jdbc.Driver");
	        dsc.setUsername("hello");
	        dsc.setPassword("123456");
	        dsc.setUrl("jdbc:mysql://192.168.20.244:3306/edo?useUnicode=true&useSSL=false&characterEncoding=utf8");
	        mpg.setDataSource(dsc);

	        // 策略配置
	        StrategyConfig strategy = new StrategyConfig();
	        //strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
	        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
	        /*strategy.setInclude(new String[] {
	        	"user","classes", "major","student","student_classes","teacher"
			}); // 需要生成的表*/
			strategy.setInclude(new String[] {
				"user"
			});

	        /*strategy.setSuperServiceClass(null);
	        strategy.setSuperServiceImplClass(null);
	        strategy.setSuperMapperClass(null);*/

	        mpg.setStrategy(strategy);

	        // 包配置
	        PackageConfig pc = new PackageConfig();
	        pc.setParent("com.itshidu.jiaowu");
	        pc.setController("controller");
	        pc.setService("service");
	        pc.setServiceImpl("service.impl");
	        pc.setMapper("dao");
	        pc.setEntity("entity");
	        pc.setXml("xml");
	        mpg.setPackageInfo(pc);

	        // 执行生成
	        mpg.execute();

	    }

        

}
